Як робити сайти для воєнного часу
Як ви уже знаєте, громадяни фашистської Росії фінансують своїми податками не тільки вбивства та гвалтування наших жінок та дітей, але і витрачають значні кошти на атаку нашої інформаційної та телекомунікаційної інфраструктури, зокрема владних органів.
Мотивація цього посту — дати комплексну оцінку цьому феномену та поділитися своїми роздумами на цю тему. Все почалося з того, коли я трохи розгрібся зі своїми справами по "МІА: Документообіг", я почав задумуватися, як ми можемо покращити якість наших сайтів, та убезпечити їх в умовах воєнного часу.
Теорія сайтів на PHP
Сайти візитівки всіх органів влади зазвичай робилися в нашій країні на PHP, тому що це дешево, найманих працівників можна міняти, плин кадрів на цих позиціях максимальний. Кожен студент може зробити на CMS фреймворку сайт, разом з пошуком, але легкість виконання цих проектів супроводжується і легкістю атаки: достатньо просто запустит в 16 потоків та 64000 конекшинів будь-яку утіліту з тестування HTTP: wrk, siege, httperf чи ab аби покласти не тільки сайт, але можливо і його SQL базу. Це вся теорія.
Уникнути цього і зробити так, аби сайт роздавався виключно статикою через nginx дуже просто, однак вимоги до пошуку ускладнюють ситуацію, потрібна динаміка, а зарплати на PHP позиціях невисокі. Тому з PHP не злазять і аутсорсять безпеку та навантаження мережевим інженерам, які усіма способами намаються покращити ситуацію, яку неможливо покращити кардинально для динаміки.
Тут потрібно сказати що зміна мови теж не покращить ситуацію, якщо ви візьмете Node.js, Ruby on Rails, чи навіть мій N2O.DEV нічого кардинально не зміниться, динаміка пошуку буде основною дірою та вектором для атак.
Юридичні нюанси
Постанова КМУ #518 регламентує, що всі критичні інфраструктурні елементи повинні зберігатися на українських ресурсах в Україні, певна логіка в цьому є, але в бюджеті України ніколи не буде статей, які по кошторису зможуть конкурувати з бюджетом кібербезпеки Amazon, Google та Microsoft. Та і сайти візитівки не можуть вважатися критичними елементами інфраструктури коли вони лежать і ми продовжуємо різати кацапів.
Після початку третьої російсько-української війни 2022 року була затверджена Постанова КМУ #263, яка дозволяє в умовах воєнного стану переносити частини інфраструктури в захищені капіталом Amazon, Google та Microsoft. Однак це не означає, що ми повинні продовжувати робити сайти на PHP.
Наступна постанова повинна чітко пояснити, що головне аби джерело інформації знаходилося в Україні, а кеші можуть бути і в Гугла, ми ж не судимося з Гуглом за те, що він кешує наші сторінки.
Статичні сайти з зовнішнім пошуком
Які би талановиті програмісти у вашій компанії не працювали, вони все одно не придумають пошук кращий, промисловійший, масштабованіший ніж Google Programmable Search Engine. Яку би ви мову імплементації DHTML не вибрали, воно все одно ніколи не буде швидше ніж гола HTML статика яка роздається кодом на C.
Тому, по-перше якщо ви вже використовуєте CMS в DHTML режимі на Node, Ruby, PHP, Perl, Python, то просто зробіть зліпок цього сайту і заморозьте його. Наприклад, просто викачавши будь-яким HTTP crawler-ом. І викладайте це прямо на Github, що знаходиться за системним периметром SmartNIC від Microsoft, яка реалізує роутінг з використанням машинного навчання вкатаного в FPGA. Це і є мережева інфраструктура Azure, найпрогресивніша мережа на планеті, у порівнянні з якою Amazon та Google це просто діти.
По-друге потрібно щось зробити з пошуком, який не можна виключити з технічних завдань на державні сайти. Тому просто беремо Google Search прикручуємо його до себе на сайт і у вас не тільки пошук для вашого сайта, який стане неактуальним зі зміною CMS, але буде підходити для будь яких сайтів, достатньо лише адаптувати та перефарбувати видачу для вашого CSS.
Захист від DDoS
На цьому ринку потрібно відзначити компанію Cloudflare, яка по суті є автором сучасного Інтернету. Я кажу це тому, що саме там зараз працюють інженери які придумали HTTP/2, вперше математично верифікований TLS 1.3, та серце майбутнього Інтернету — протокол QUIC, який відомий як HTTP/3 або багатострімовий UDP за TLS.
Я бачу, що більшість органів державної влади вже перейшли на фронтальну вітрину Cloudflare та просто галочкою включають Under Attack Mode. Я вітаю цю ініціативу. Видно, що Мінцифра теж використовує щось на кшалт статики з зовнішнім пошуком, тому що їх латенсі доволі сучасне 500мс, на відміну від сайтів PHP з мінімальним латенсі в межах 1200мс.
Ну а для всіх інших потрібно виконати домашнє завдання.